home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / System-Boost / Grafik / MetaView / SlideShowMV < prev    next >
Text File  |  1998-11-08  |  9KB  |  333 lines

  1. /* Program to use Metaview to display a whole directory of files, including subdirectories. An assign to Metaview: is needed.  */
  2.  
  3. /* Written by Don Cox, Nov 97. Copyright, not Public Domain. */
  4. /* $VER:SlideShowMV Oct19 98 */
  5.  
  6.  
  7. /*call open("STDERR","ram:traceSS","W")
  8. trace r*/
  9.  
  10. options results
  11. numeric digits 14
  12.  
  13.  
  14. /* +++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++ */
  15.  
  16. address command
  17. dir1 = getclip('FileSortIn')
  18. if dir1 ~= "" then 'requestfile >ram:answer DRAWER "'dir1'" TITLE "Source Directory" DRAWERSONLY'
  19. else 'requestfile >ram:answer TITLE "Source Directory" DRAWERSONLY'
  20. call open("answer","ram:answer",'R')
  21. directory = strip(readln("answer"),'B','"')
  22. call setclip('FileSortIn',directory)
  23.  
  24. 'REQUESTCHOICE >ram:rcnum1 "Display Time"  "Seconds per image" "1|3|5|7|Abort"'
  25.  
  26. call open("answer3","ram:rcnum1")
  27. rcn = readln("answer3")
  28. SecsPerImage = rcn
  29. if rcn = 0 then exit
  30.  
  31.  
  32. /* Looking for our start process */
  33.  
  34. /*
  35. ** Create a new Metaview process:
  36. ** first look for the allready running processes
  37. ** then the new Port will be the next one
  38. */
  39.  
  40. do NUMBER = 0 to 20
  41.     if (SHOW(PORTS,"METAVIEW." || NUMBER) = 0) then
  42.     leave
  43. end
  44.  
  45. /*
  46. ** Searching for MetaView: 1. our path above,
  47. **    2. path in env:MetaView.path
  48. ** or 3. you must have a assign "MetaView:"
  49. */
  50. /*
  51. **if (EXISTS(METAVIEW)=0) then do
  52. */
  53.     if OPEN("MVVAR","env:MetaView.path","Read") then do
  54.         METAVIEW = READLN("MVVAR")
  55.         METAVIEWpath= getpath(METAVIEW)
  56.         address command
  57.         'assign METAVIEW: 'METAVIEWpath
  58.     end
  59.     if (EXISTS(METAVIEW)=0) then do
  60.         METAVIEW = "MetaView:MetaView"
  61.     end
  62. /*
  63. **end
  64. */
  65. /*
  66. ** Enable warnings for WaitForPort
  67. */
  68.  
  69. OPTIONS FAILAT 5
  70. ADDRESS COMMAND
  71.     "run " || METAVIEW 
  72.     MVPORT = "METAVIEW." || NUMBER
  73.     "WaitForPort " || MVPORT
  74.  
  75.  
  76. address value MVPORT
  77.  
  78.  
  79. ASKFONT NO
  80.  
  81. /* Display files in one directory and its descendents */
  82.  
  83. imagecount = 1
  84. newfile = ""
  85. oldfile = ""
  86.  
  87. address command
  88. 'delete Metaview:dirlist1'
  89. 'delete Metaview:dirlist'
  90. 'list >Metaview:dirlist1 "'directory'" dirs all LFORMAT="%P%S"'
  91. 'sort from Metaview:dirlist1 to Metaview:dirlist'
  92. call open("dirinput","Metaview:dirlist","r")
  93.  
  94. /* First display pics in root directory */
  95. 'delete Metaview:filelist1'
  96. 'delete Metaview:filelist'
  97. 'list >Metaview:filelist1 "'directory'" files LFORMAT="%P%S"'
  98. call open('input',"Metaview:filelist1","r") /* test in case it's empty */
  99. listtest = readln('input')
  100. call close('input')
  101.  
  102. if listtest~="" then do
  103.     'sort from Metaview:filelist1 to Metaview:filelist'
  104.     call dirdisplay
  105.     end
  106.  
  107.  
  108. /* Now do all the subdirectories */
  109.  
  110. if~exists("Metaview:dirlist") then wayout()
  111.  
  112. listtest = readln("dirinput")
  113. call seek("dirinput",0,'B')
  114. dirtrees = 0
  115. if listtest~="" then do
  116.     'REQUEST "Show images in Subdirectories?" "Yes|No"' 
  117.     dirtrees = rc
  118.     end
  119.  
  120. do d = 1 to 700
  121.     dirname = readln("dirinput")
  122.     if dirname = "" then break
  123.     address command
  124.     'delete Metaview:filelist1'
  125.     'delete Metaview:filelist'
  126.     'list >Metaview:filelist1 "'dirname'" files LFORMAT="%P%S"'
  127.     call open('input2',"Metaview:filelist1","r") /* test in case it's empty */
  128.     listtest = readln('input2')
  129.     call close('input2')
  130.  
  131.     if listtest~="" then do
  132.         'sort from Metaview:filelist1 to Metaview:filelist'
  133.         call dirdisplay
  134.         end
  135.     end
  136.  
  137. wayout:
  138. address value MVPORT
  139. 'ASKFONT'
  140. 'REQUEST "   Finished   "'
  141. exit
  142. end
  143.  
  144. /* ++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++ */
  145.  
  146.  
  147. getpath:
  148. parse arg allname
  149. pos1 = lastpos("/",allname)
  150. if pos1 = 0 then pos1 = lastpos(":",allname)
  151. filepath = left(allname,pos1)
  152. return filepath
  153.  
  154. getname:
  155. parse arg allname
  156. pos1 = lastpos("/",allname)
  157. if pos1 = 0 then pos1 = lastpos(":",allname)
  158. justname = substr(allname,pos1+1)
  159. return justname 
  160.  
  161. expandfilename: procedure
  162.   parse arg jfile;
  163.   if index(jfile,':') = 0 then do
  164.     curdir = pragma(D);
  165.     if right(curdir,1) ~= ':' then do
  166.       if right(curdir,1) ~= '/' then do
  167.         if curdir ~= '' then do
  168.           curdir = curdir || '/';
  169.           end;
  170.         end;
  171.       end;
  172.     jfile = curdir||jfile;
  173.     end;
  174.   return jfile
  175.  
  176. rounded: procedure
  177. parse arg number
  178. originalNumber = number
  179. number = trunc(number)
  180. if (originalNumber-number)>0.5 then number=number+1
  181. return number
  182.  
  183.  
  184. /* ++++++++++++++++++++++++++++++  ++++++++++++++++++++++++++++++++++*/
  185.  
  186. /* Display all the pics in one directory */
  187. dirdisplay:
  188. address value MVPORT
  189.  
  190.  
  191. call open('input3',"Metaview:filelist","r")
  192. do i = 1 to 7000   /* safety limit of 7000 files  */
  193.     filename = readln('input3')
  194.     if filename = "" then break
  195.     
  196.     slashpos = lastpos("/",filename)
  197.     dotpos = lastpos(".",filename)
  198.     if dotpos<slashpos then dotpos = 0 /* not dots in directory names */
  199.     if dotpos~=0 then extension = upper(substr(filename,dotpos))
  200.     else extension = ""
  201.     extensionlist = ".INFO .ILBM .GIF .PSFONT .FONT .PDFONT .PFB .AFM .METRIC .LIB .DEM .DOC .TXT .WP .README .ME .ZIP .ARC .ME .DAT .EXE .PIF .INI .TF .DB .C .H .GF .PPRX .PDRX .REXX .ADPRO .CFG .PREFS .HTM .HTML"
  202.     if pos(upper(extension),extensionlist)~=0 then iterate i
  203.     if word(filename,2) = "files" then iterate i /* This line not a file name */
  204.     if filename="Ram:traceSS" then iterate i
  205.     if word(filename,1) = "TOTAL:" then break  /* or this one */
  206.  
  207.     if upper(extension) = ".LHA" then call UnArc()
  208.     else success = showpic()
  209.  
  210.  
  211.     end    /* end of directory */
  212.  
  213. call close('input3')
  214.  
  215.  
  216. return
  217.  
  218. /* +++++++++++++++++++++++++++++++  +++++++++++++++++++++++++++++++++ */
  219.  
  220. showpic:
  221.  
  222. if ~open("picinput",filename,"R") then return 1
  223. chunks = readch("picinput",1000)
  224. call close("picinput")
  225.  
  226. address value MVPORT
  227.  
  228. 'LOAD "'filename'"' /* Quotes allow file names with spaces */
  229. if rc ~=0 then return 1 /* if load fails, try the next one */
  230. newfile = result
  231.  
  232. address command
  233. "wait "SecsPerImage
  234. address value MVPORT
  235.  
  236. return 0
  237.  
  238. /* ++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++ */
  239.  
  240. /* Unarchive LHA files to HD and display temporary dir */
  241. UnArc:
  242. if ~exists("c:lha") then return 1
  243. address command
  244. if exists("Metaview:ssarc") then 'delete Metaview:ssarc all' /* gets rid of any crash-producing files left from previous run */
  245. 'makedir Metaview:ssarc'
  246.  
  247. 'lha e -f "'filename'" Metaview:ssarc/'
  248.  
  249.  
  250. /* Display files in archive directory and its descendents. LHA files within LHA files are NOT expanded. */
  251.  
  252. arcimagecount = 1
  253.  
  254. address command
  255. 'delete Metaview:arcdirlist1'
  256. 'delete Metaview:arcdirlist'
  257. 'list >Metaview:arcdirlist1 Metaview:ssarc dirs all LFORMAT="%P%S"'
  258. 'sort from Metaview:arcdirlist1 to Metaview:arcdirlist'
  259. call open("arcdirinput","Metaview:arcdirlist","r")
  260.  
  261. /* First display pics in root directory */
  262. 'delete Metaview:arcfilelist1'
  263. 'delete Metaview:arcfilelist'
  264. 'list >Metaview:arcfilelist1 Metaview:ssarc files LFORMAT="%P%S"'
  265. call open('arcinput',"Metaview:arcfilelist1","r") /* test in case it's empty */
  266. listtest = readln('arcinput')
  267. call close('arcinput')
  268.  
  269. if listtest~="" then do
  270.     'sort from Metaview:arcfilelist1 to Metaview:arcfilelist'
  271.     call arcdirdisplay
  272.     end
  273.  
  274.  
  275. /* Now do all the archive subdirectories */
  276.  
  277. if~exists("Metaview:arcdirlist") then return
  278.  
  279. listtest = readln("arcdirinput")
  280. call seek("arcdirinput",0,'B')
  281.  
  282. do d = 1 to 700
  283.     arcdirname = readln("arcdirinput")
  284.     if arcdirname = "" then break
  285.     address command
  286.     'delete Metaview:arcfilelist1'
  287.     'delete Metaview:arcfilelist'
  288.     'list >Metaview:arcfilelist1 "'arcdirname'" files LFORMAT="%P%S"'
  289.     call open('arcinput2',"Metaview:arcfilelist1","r") /* test in case it's empty */
  290.     listtest = readln('arcinput2')
  291.     call close('arcinput2')
  292.  
  293.     if listtest~="" then do
  294.         'sort from Metaview:arcfilelist1 to Metaview:arcfilelist'
  295.         address "IMAGEENGINEER"
  296.         call arcdirdisplay
  297.         end
  298.     end
  299. call close("arcdirinput")
  300. 'delete Metaview:ssarc all'
  301. return
  302.  
  303. /* +++++++++++++++++++++++++++++  ++++++++++++++++++++++++++++++++++  */
  304.  
  305. arcdirdisplay:
  306.  
  307. call open('inputarc',"Metaview:arcfilelist","r")
  308. do a = 1 to 7000   /* safety limit of 7000 files  */
  309.     address command
  310.     filename = readln('inputarc')
  311.     if filename = "" then break
  312.     
  313.     slashpos = lastpos("/",filename)
  314.     dotpos = lastpos(".",filename)
  315.     if dotpos<slashpos then dotpos = 0 /* not dots in directory names */
  316.     if dotpos~=0 then extension = upper(substr(filename,dotpos))
  317.     else extension = ""
  318.     /* Note: this time filter out LHA files */
  319.     extensionlist = extensionlist||" .LHA"
  320.     if pos(upper(extension),extensionlist)~=0 then iterate a
  321.     if word(filename,2) = "files" then iterate /* This line not a file name */
  322.     if left(filename,9)="Ram:trace" then iterate
  323.     if word(filename,1) = "TOTAL:" then break  /* or this one */
  324.  
  325.     success = showpic()
  326.     end    /* end of directory */
  327.  
  328. call close('inputarc')
  329.  
  330.  
  331. return 0
  332.  
  333.